From: Florian Müllner Date: Wed, 2 Mar 2022 13:33:11 +0000 (+0100) Subject: appDisplay: Create default folders on start X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~516^2^2~22 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=919039e2668ccd484beba4039232cc7649c31026;p=gnome-shell.git appDisplay: Create default folders on start The default folders used to be created by gnome-software, as that was where folder management used to be implemented. Since then, folder management via drag and drop was implemented in the shell, and the gnome-software code was removed. The only bit that still involves gnome-software are the default folders that are created on first run. Given that everything else has moved to the shell, it makes sense to take over that part as well. https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/4948 Part-of: --- diff --git a/js/ui/appDisplay.js b/js/ui/appDisplay.js index 9abadaabe..3ff32c9f7 100644 --- a/js/ui/appDisplay.js +++ b/js/ui/appDisplay.js @@ -54,6 +54,35 @@ const DELAYED_MOVE_TIMEOUT = 200; const DIALOG_SHADE_NORMAL = Clutter.Color.from_pixel(0x000000cc); const DIALOG_SHADE_HIGHLIGHT = Clutter.Color.from_pixel(0x00000055); +const DEFAULT_FOLDERS = { + 'Utilities': { + name: 'X-GNOME-Utilities.directory', + categories: ['X-GNOME-Utilities'], + apps: [ + 'gnome-abrt.desktop', + 'gnome-system-log.desktop', + 'nm-connection-editor.desktop', + 'org.gnome.baobab.desktop', + 'org.gnome.Connections.desktop', + 'org.gnome.DejaDup.desktop', + 'org.gnome.Dictionary.desktop', + 'org.gnome.DiskUtility.desktop', + 'org.gnome.eog.desktop', + 'org.gnome.Evince.desktop', + 'org.gnome.FileRoller.desktop', + 'org.gnome.fonts.desktop', + 'org.gnome.seahorse.Application.desktop', + 'org.gnome.tweaks.desktop', + 'org.gnome.Usage.desktop', + 'vinagre.desktop', + ], + }, + 'YaST': { + name: 'suse-yast.directory', + categegories: ['X-SuSE-YaST'], + }, +}; + var SidePages = { NONE: 0, PREVIOUS: 1 << 0, @@ -1386,6 +1415,7 @@ class AppDisplay extends BaseAppView { Main.queueDeferredWork(this._redisplayWorkId); }); this._folderSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.app-folders' }); + this._ensureDefaultFolders(); this._folderSettings.connect('changed::folder-children', () => { Main.queueDeferredWork(this._redisplayWorkId); }); @@ -1450,6 +1480,28 @@ class AppDisplay extends BaseAppView { this._pageManager.pages = pages; } + _ensureDefaultFolders() { + if (this._folderSettings.get_strv('folder-children').length > 0) + return; + + const folders = Object.keys(DEFAULT_FOLDERS); + this._folderSettings.set_strv('folder-children', folders); + + const { path } = this._folderSettings; + for (const folder in folders) { + const { name, categories, apps } = DEFAULT_FOLDERS[folder]; + const child = new Gio.Settings({ + schema_id: 'org.gnome.desktop.app-folders.folder', + path: `${path}/folders/${folder}/`, + }); + child.set_string('name', name); + child.set_boolean('translate', true); + child.set_strv('categories', categories); + if (apps) + child.set_strv('apps', apps); + } + } + _ensurePlaceholder(source) { if (this._placeholder) return;